package com.shuda.business.crm.service;

import com.shuda.business.crm.dto.CustomerDTO;
import com.shuda.business.crm.dto.CustomerQueryDTO;
import com.shuda.common.core.domain.PageDTO;
import com.shuda.common.core.domain.PageResult;

import java.util.List;

/**
 * CRM客户服务接口
 */
public interface CustomerService {

    /**
     * 获取客户分页列表
     */
    PageResult<CustomerDTO> getCustomerPage(PageDTO pageDTO, CustomerQueryDTO queryDTO);

    /**
     * 获取客户详情
     */
    CustomerDTO getCustomerById(Long id);

    /**
     * 创建客户
     */
    CustomerDTO createCustomer(CustomerDTO customerDTO);

    /**
     * 更新客户
     */
    CustomerDTO updateCustomer(Long id, CustomerDTO customerDTO);

    /**
     * 删除客户
     */
    Boolean deleteCustomer(Long id);

    /**
     * 批量删除客户
     */
    Boolean batchDeleteCustomers(List<Long> ids);

    /**
     * 更新客户状态
     */
    Boolean updateCustomerStatus(Long id, String status);

    /**
     * 分配客户给业务员
     */
    Boolean assignCustomer(Long id, Long userId);

    /**
     * 批量分配客户
     */
    Boolean batchAssignCustomers(List<Long> customerIds, Long userId);

    /**
     * 获取客户跟进记录
     */
    List<Object> getCustomerFollowUps(Long id);

    /**
     * 添加客户跟进记录
     */
    Boolean addCustomerFollowUp(Long id, Object followUpDTO);

    /**
     * 获取客户统计信息
     */
    Object getCustomerStatistics();

    /**
     * 导出客户数据
     */
    byte[] exportCustomerData(CustomerQueryDTO queryDTO);
}